#ifndef _PYRAMIDE_H
#define _PYRAMIDE_H

#include "FormeComposee.hpp"

#include "Plan.hpp"

#include <vector>

/**
 * Classe implémentant les pyramides pour le raytracing. La base de la
 * Pyramide est un parallélogramme par construction. Elle est donc
 * composée de 4 instances de Plan.
 *
 * Forme::baryCentre est le centre de gravité de la Pyramide.
 *
 * @author Jean-Marc Comby
 * @author Romain Dequesne
 * @author Johan "Solo" Luisier
 *
 * @date 08 Juin 2004
 */
class Pyramide: public FormeComposee
{
 public:
  Pyramide(const Coord& base1, const Coord& base2, const Coord& base3,
	   const Coord& hauteur);
  ~Pyramide();
	
 private:
  /**
   * Liste des plans nécessaires.
   */
  std::vector< Plan::SharedPtr > listplan;
  /**
   * Liste des instances de FormeComposee nécessaires.
   */
  std::vector< FormeComposee::SharedPtr > listFC;
};

#endif
